Vibrational input elements

ABSTRACT

Systems and methods are provided that relate to vibrational input elements configured to provide inputs to control an application executed by a mobile computing device. The vibrational input elements may produce distinct vibration patterns that are detectable by a sensor of the mobile computing device. The respective vibration patterns may correspond to one or more actions that may be performed in relation to the application.

PRIORITY CLAIM AND INCORPORATION BY REFERENCE

This application is a division of U.S. patent application Ser. No.16/832,630, filed Mar. 27, 2020, which application claims priority toU.S. Provisional Patent Application Ser. No. 62/826,581, filed on Mar.29, 2019, and entitled “Vibrational Input Elements”, which areincorporated by reference herein in their entireties.

BACKGROUND

Mobile computing devices tend to have a standard set of input devicesand sensor features, such as a touch screen display and various locationand movement sensors. Some mobile computing devices may or may not havephysical buttons, but such buttons are fixed and have limitedversatility due to the size constraints, power constraints, and othersuch limitations of mobile computing devices. Some “peripheral” devicesare available to provide extended input functionality to mobilecomputing devices. Such devices either use physical electrical inputports (e.g. Universal Serial Bus or headphone jack inputs) or wirelesscommunications. For physical connections, the actual process ofconnecting the mobile computing device to a port may cause problems, andis a possible point of failure. For both wired and wireless connectionsof these types, significant power may be required to provide inputsignals and power features to the peripheral interface and inputelements.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present disclosure and should not be considered aslimiting its scope.

FIG. 1 is an illustration of an environment in which a mobile computingdevice may be used with vibrational input elements, in accordance withone or more example embodiments.

FIG. 2 illustrates modular aspects of vibrational input elements whichmay be used with a mobile computing device, in accordance with one ormore example embodiments,

FIG. 3A illustrates actuation of a vibrational input element in a firsthold position, in accordance with one or more example embodiments.

FIG. 3B illustrates actuation of the vibrational input element in asecond hold position, in accordance with one or more exampleembodiments.

FIG. 4A illustrates aspects of a button vibrational input element, inaccordance with one or more example embodiments.

FIG. 4B shows a simplified model of the forces acting on the body of abutton vibrational input element, in accordance with one or more exampleembodiments.

FIG. 4C further illustrates design considerations of the vibrationspring in connection with other parts of a push-button vibrational inputelement, in accordance with one or more example embodiments.

FIG. 4D illustrates an example “tooth” shape for the vibration structureand an associated ball shape for the weight of a button vibrationalinput element, in accordance with one or more example embodiments.

FIG. 4E illustrates an example vibration signal that may be generated bya button vibrational input element, in accordance with one or moreexample embodiments.

FIG. 5A illustrates another example “tooth” shape for the vibrationstructure and an associated ball shape for the weight of a buttonvibrational input element, in accordance with one or more exampleembodiments.

FIG. 5B illustrates an example vibration signal that may be generated byan additional button vibrational input element, in accordance with oneor more example embodiments.

FIG. 6A illustrates aspects of button vibrational input elementcalibration, in accordance with one or more example embodiments.

FIG. 6B illustrates a vibration profile that may be generated for thevibrational input element during calibration, in accordance with one ormore example embodiments.

FIG. 6C illustrates signals generated by repeated inputs for a singlevibrational input element for repeated push and release actions, inaccordance with one or more example embodiments

FIG. 6D illustrates segmentations of the signals from FIG. 6C amplitudeand local maxima of the segmented signals, in accordance with one ormore example embodiments.

FIG. 7A illustrates aspects of gear vibrational input element, inaccordance with one or more example embodiments.

FIG. 7B illustrates an example vibrational signal that may be generatedby a gear vibrational input element, in accordance with one or moreexample embodiments.

FIG. 7C illustrates four different possible patterns of teeth that maybe used with a gear vibrational input element and the associateddistinguishable vibration patterns for each pattern of teeth, inaccordance with one or more example embodiments.

FIG. 8A illustrates aspects of shapes of teeth of a gear vibrationalinput element, in accordance with one or more example embodiments.

FIG. 8B illustrates how gear vibrational input elements having differentshaped teeth have different characteristics, in accordance with one ormore example embodiments.

FIG. 9 is a flow diagram illustrating an example method to usevibrational input elements to perform an action in relation to acomputing device application, in accordance with one or more exampleembodiments.

FIG. 10 is a block diagram illustrating an example of a softwarearchitecture that may be installed on a machine and used to implementfunctionality with vibrational input elements, according to some exampleembodiments.

FIG. 11 illustrates a diagrammatic representation of a machine in theform of a mobile device or other such systems which may use vibrationalinput elements and within which a set of instructions may be executedfor causing the machine to perform any one or more of the methodologiesdiscussed herein, according to various example embodiments.

DETAILED DESCRIPTION

Systems and methods described herein relate to vibrational inputelements configured to provide input to control a mobile computingdevice by creating distinct vibration patterns that are detectable by asensor of the mobile computing device. While particular embodiments aredescribed herein, it will be apparent that additional systems andmethods are possible within the scope of the present innovations otherthan the embodiments specifically described.

Many mobile computing devices such as cell phones and tablets includemotion sensors (e.g. accelerometers) which handle axis-based motionsensing. Embodiments described herein include physical vibrational inputelements, as well as systems to detect vibrations produced by theactivation of the vibrational input elements and to translate thevibrations into responsive software or user interface actions taken by amobile computing device (e.g., a smartphone). One type of vibrationalinput element is a button-element, which creates a distinct vibration asa button is pushed and released. The vibration is detected by anaccelerometer, and the detected signal is passed to a system thatassociates the distinct vibration with the button action (e.g., thepress and release) to determine that the button has been pressed and/orreleased. The system then initiates an activity in software on thecomputing device based on the detected button action. Such actions mayinclude selections within a user interface, output of sound as part of avirtual musical instrument using the computing device, or any actionwhich a computing device may associate with such a detected vibration.Multiple buttons may be used with a single computing device byconfiguring different button elements to generate distinguishablevibrations. Such buttons may be passive elements requiring no electricalpower, but using internal springs or another type of mechanicalcomponent, such as a hydraulic or pneumatic cylinder, etc., that canrepeatably move in a known measurable manner. Any such buttons attachedto a computing device may be calibrated in various ways to determine howthe distinct mechanical movements or vibrations related to the buttonare sensed by one or more sensors of the computing device, such as oneor more accelerometers, and to account for changes in the vibrationpatterns over time due to wear on the components of such passivevibrational elements.

Another example of a vibrational input element is a gear or wheelelement. Similar to the button element described above, turning thewheel element generates distinct vibrations which are detectable by acomputing device having one or more sensors, such as one or moreaccelerometers. In some such systems, an accelerometer is sufficientlysensitive to distinguish vibrations from the same wheel element as thewheel is being turned in different directions. For example, vibrationssensed from a wheel turned in a first direction may be used to initiatea zoom-in action in a user interface, and distinct vibrations sensedfrom turning the wheel in a second direction opposite from the firstdirection may initiate a zoom-out action in the user interface.

Software of a computing device may be calibrated not only to identifydistinct vibrations from different vibrational elements attached to thesame computing device, but to identify different vibrations which occurfrom the same element depending on the position in which a user isholding the computing device. For example, a first vibrational elementactivated using a one-handed hold position may produce a differentvibration than when the computing device is held using two hands.Various systems may be structured to identify that a vibration is comingfrom the same vibrational input element regardless of the hold position,or may be configured to generate different actions from the samevibrational input element depending on how the computing device is beingheld. Any such actions may be configurable as part of computing deviceoperations to perform actions based on vibrations created usingvibrational input elements, as described herein.

FIG. 1 is an illustration of an environment 100 in which a mobilecomputing device may be used with vibrational input elements, inaccordance with one or more example embodiments. The environment 100 mayinclude a client device 102 that may host a number of applications, suchas a client application 104. The client device 102 may include a mobilecomputing device, such as a smartphone, a tablet computing device, aportable gaming device and the like, in some implementations. The clientapplication 104 may be communicatively coupled to other instances of theclient application 104 and to a server system 106 via one or morenetworks 108.

The client application 104 may be able to communicate and exchange datawith another instance of client application 104 and with the serversystem 106 via the one or more network 108. The data exchanged betweenthe client application 104, and between another instance of the clientapplication 104 and the server system 106 may include functions (e.g.,commands to invoke functions) as well as payload data (e.g., text,audio, video or other multimedia data).

The server system 106 provides server-side functionality via the one ormore networks 108 to a particular client application 104. While certainfunctions of the environment 100 are described herein as being performedby either the client application 104 or by the server system 106, thelocation of certain functionality either within the client application104 or the server system 106 is a design choice. For example, it may betechnically preferable to initially, deploy certain technology andfunctionality within the server system 106, but to later migrate thistechnology and functionality to the client application 104 where aclient device 102 has a sufficient processing capacity.

The server system 106 supports various services and operations that areprovided to the client application 104. Such operations includetransmitting data to, receiving data from, and processing data generatedby the client application 104. This data may include at least one oftext content, video content, audio content, image content, messagecontent, client device information, geolocation information, mediaannotation and overlays, message content persistence conditions, socialnetwork information, and live event information, as examples. Dataexchanges within the environment 100 may be invoked and controlledthrough functions available via user interfaces (UIs) of the clientapplication 104.

Turning now specifically to the server system 106, an ApplicationProgram Interface (API) server 110 is coupled to, and provides aprogrammatic interface to, an application server 112. The applicationserver 112 is communicatively coupled to a database server 114, whichfacilitates access to one or more databases 116 in data associated withcontent processed by the application server 112 is stored.

The Application Program Interface (API) server 110 receives andtransmits content data (e.g., commands and content payloads) between theclient device 102 and the application server 112. Specifically, theApplication Program Interface (API) server 110 provides a set ofinterfaces (e.g., routines and protocols) that can be called or queriedby the client application 104 in order to invoke functionality of theapplication server 112. The Application Program Interface (API) server110 exposes various functions supported by the application server 112,including account registration, login functionality, the sending ofmessages, via the application server 112, from one instance of theclient application 104 to another instance of the client application104, the sending of media files (e.g., images or video) from oneinstance of the client application 104 to the messaging applicationsystem 118, and for possible access by another instance of the clientapplication 104, the setting of a collection of media data (e.g.,story), the retrieval of a list of contacts of a user of a client device102, the retrieval of such collections, the retrieval of messages andcontent, the adding and deletion of contacts to a social graph, thelocation of contacts within a social graph, and opening an applicationevent (e.g., relating to the client application 104).

The application server 112 hosts a number of applications andsubsystems, including a messaging application system 118, a mediacontent processing system 120, and a social network system 122. Themessaging application system 118 implements a number of messageprocessing technologies and functions, particularly related to theaggregation and other processing of content (e.g., textual andmultimedia content) included in messages received from multipleinstances of the client application 104. As will be described in furtherdetail, the text and media content from multiple sources may beaggregated into collections of content (e.g., called stories orgalleries). These collections are then made available, by the messagingapplication system 118, to the client application 104. Other processorand memory intensive processing of data may also be performedserver-side by the messaging application system 118, in view of thehardware requirements for such processing.

The application server 112 also includes a media content processingsystem 120 that is dedicated to performing various media contentprocessing operations, typically with respect to images or videoreceived within the payload of a content, such as a message at themessaging application system 118.

The social network system 122 supports various social networkingfunctions services, and makes these functions and services available tothe messaging application system 118. To this end, the social networksystem 122 maintains and accesses an entity graph within the one or moredatabases 116. Examples of functions and services supported by thesocial network system 122 include the identification of other users ofthe client application 104 with which a particular user hasrelationships or is “following”, and also the identification of otherentities and interests of a particular user.

The client device 102 may include a mobile computing device executing amobile operating system (e.g., IOS™, ANDROID™, WINDOWS® Phone, or othermobile operating systems), consistent with some embodiments. In variousembodiments, one or more vibrational input elements may be integrateddirectly into the body of the client device 102. Additionally,vibrational input elements may be disposed in a cover or case that iscoupled to the body of the client device 102 such that vibrations fromthe vibrational input elements are transmitted in a distinct fashion toone or more sensors of the client device 102. The client device 102 mayimplement a software architecture described herein in certainembodiments, which may be used to determine when vibrations are receivedfrom a vibrational input element, and to take actions (e.g. userinterface actions or audio output actions) in response to a sensedvibration. In some embodiments, the client device 102 includes atouchscreen with a display area 124. The touchscreen is operable toreceive tactile data from a user, or other inputs such as motionsensors, cameras, etcetera. These inputs may be used to provide commandsto control and manipulate user interfaces or software elements inaccordance with embodiments described herein. For example, a region 126of the display area 124 may correspond to a user interface element thatis selectable by a touch input from a user to perform one or moreoperations.

The client device 102 of FIG. 1 may also present a user interface in thedisplay area 124, with the user interface at least partiallycontrollable using vibrational input elements. To illustrate, the clientdevice 102 may be coupled with a first vibrational input element 128 anda second vibrational input element 130. Actuation of the firstvibrational input element 128 and/or the second vibrational inputelement 130 may cause vibrations to take place. The vibrations may bedetected by one or more sensors of the client device 102. The clientdevice 102 may include a vibrational input system 132 that interpretsthe vibrations detected by one or more sensors of the client device 102.The vibrational input system 132 may determine a pattern of vibrationsbased on data obtained from one or more sensors of the client device 102in response to actuation of at least one of the first vibrational inputelement 128 or the second vibrational input element 130. The vibrationalinput system 132 may analyze the pattern of vibrations with respect toone or more vibration profiles. The one or more vibration profiles maycorrespond to previously determined vibration patterns for one or morevibrational input elements. The one or more vibration profiles may alsoindicate one or more operations that correspond to actuation of eachvibrational input element. In various examples, at least a portion ofthe vibration profiles may correspond to a same vibrational inputelement being actuated in a different manner, such as counterclockwiseand clockwise rotation of a wheel vibrational input element.

In one or more illustrative examples, the vibrational input system 132may determine a measure of similarity between vibrations produced byactuation of a vibrational input element 128, 130 and one or morevibration profiles. In situations where the measure of similarity isgreater than a threshold measure of similarity with respect to aparticular vibration profile, the vibrational input system 132 maydetermine that the vibrations detected by one or more sensors of theclient device 102 correspond to the vibrational input element related tothe particular vibration profile. The vibrational input system 132 maythen cause one or more applications, such as the client application 104,to perform one or more operations associated with actuation of thevibrational input element. In additional examples, the vibrational inputsystem 132 may determine measures of similarity between a vibrationpattern produced by actuation of at least one of the vibrational inputelements 128, 130 and a plurality of vibration profiles. The vibrationalinput system 132 may determine the measure of similarity having agreatest value and determine that actuation has taken place with respectto the vibrational input element corresponding to the vibration profilethat has a greatest amount of similarity with the vibration patterndetected by the one or more sensors of the client device 102.

At least a portion of the one or more vibration profiles analyzed by thevibrational input system 132 may be stored by the client device 102 asclient vibration profiles 134. Additionally, at least a portion of theone or more vibration profiles analyzed by the vibrational input system132 may be obtained from the server system 106 and stored as systemvibration profiles 136 in the database 116. The vibration profiles 134,136 may indicate sensor data that corresponds to the actuation of one ormore vibrational input elements. For example, the vibration profiles134, 136 may correspond to sensor data generated by one or more sensorsof one or more client devices in response to actuation of a buttonvibration input element. In additional examples, the vibration profiles134, 136 may correspond to sensor data generated by one or more sensorsof one or more client devices in response to activation of a wheelvibration input element. In various examples, the client vibrationprofiles 134 and/or the system vibration profiles 136 may correspond tosensor data indicating patterns of vibration generated in response toactuation of the vibrational input elements coupled to the client device102, such as the first vibrational input element 128 and the secondvibrational input element 130. In one or more illustrative examples, thevibrational input system 132 may cause a calibration procedure to takeplace to associate actuation of each vibrational input element 128, 130and/or actuation of a combination of the vibrational input elements 128and 130 with a respective vibration pattern. The one or more vibrationpatterns determined as part of the calibration process may be includedin the client vibration profiles 134 and/or the system vibrationprofiles 136.

In one or more embodiments, the calibration process may be performedperiodically. In additional embodiments, the calibration process may beperformed in response to determining an amount of change in thevibrations produced by at least one of the first vibrational inputelement 128 or the second vibrational input element 130 over a period oftime. For example, as the vibrational input elements 128, 130 are usedover time, the vibrations produced by the vibrational input elements128, 130 may change. The vibrational input system 132 may detect anamount of change of the vibrations produced by at least one of thevibrational input elements 128, 130. In situations where the amount ofchange is greater than a threshold amount of change, the vibrationalinput system 132 may cause a calibration procedure to take place.

Many varieties of applications (also referred to as “apps”) can beexecuting on the client device 102, such as native applications (e.g.,applications programmed in Objective-C, Swift, or another suitablelanguage running on IOS™, or applications programmed in Java running onANDROID™), mobile web applications (e.g., applications written inHypertext Markup Language-5 (HTML5)), or hybrid applications (e.g., anative shell application that launches an HTML5 session). For example,the client device 102 may include a messaging app, an audio recordingapp, a camera app, a book reader app, a media app, a fitness app, a filemanagement app, a location app, a browser app, a settings app, acontacts app, a telephone call app, or other apps (e.g., gaming apps,social networking apps, biometric monitoring apps). In variousembodiments, systems may be provided to control some portion of any suchapps using vibrational input elements, as described herein.

FIG. 2 illustrates a device 202 with a display area 204. Area 206 mayinclude a housing for vibrational input elements that may compriseeither a case surrounding the device 202 or be integrated with a body ofthe device 202. In either embodiment, vibrational input elements 208,210, 212, 214, 216 are positioned in area 206. Vibrational inputelements 208, 210, 212, 214, 216 are physically coupled to device 202such that vibrations generated by actuation of one or more of thevibrational input elements 208, 210, 212, 214, 216 are transmittedthrough the physical components of device 202 (e.g., such as through thecasing, body of the device 202, one or more electronic boards, dedicatedvibration pathways, etc.) to a sensor 218. In one or more illustrativeexamples, the sensor 218 may include an accelerometer that detects thevibrations. In the embodiment of FIG. 2, vibrational input elements 210,212, 214, 216 are button elements, and vibrational input element 208 isa gear or wheel vibrational input element. Additional details of buttonelements are described below, with one example illustrated in FIG. 44.Wheel elements are also described below, with one example illustrated inFIG. 7A. Device 202 of FIG. 2 shows an example with five vibrationalinput elements 208, 210, 212, 214, 216 in specific positions, however,any number of button vibrational input elements and any number of wheelvibrational input elements may be integrated with a single device withthe vibrational input elements in any position, so long as the movementsor vibrations generated by such vibrational input elements are able tobe distinguished by the system a vibrational control system orapplication that processes and interprets signals received at anaccelerometer of the device 202).

FIG. 3A illustrates the example client device 102 having the vibrationalinput elements 128, 130 in a first hold position 300. FIG. 3Billustrates the example client device 102 having the vibrationalelements 128, 130 in a second hold position 302. Actuation ofvibrational input elements 128, 130 in different hold positions maycause different vibration patterns. In various examples, the differentvibration patterns may be associated with different operations to beperformed by the client device 102. For example, actuation of the secondvibrational input element 130 in the first hold position 300 may cause afirst operation to be performed by the client device 102. In addition,actuation of the second vibrational element 130 in the second holdposition 302 may cause a second operation to be performed by the clientdevice 102.

FIG. 4A illustrates aspects of an example push button vibrational inputelement 400 that can be used to provide input to a client device.Vibrational input element 400 may be embedded within a body of a clientdevice, such as the client device 102 of FIG. 1 or the device 202 ofFIG. 2. In additional examples, the vibrational input element 400 may bepart of a case which is used as a device attachment or as a protectivecase for a client device. In the illustrative example of FIG. 4A, ahousing for the vibrational input element 400 is not shown.

Vibrational input element 400 includes a button 402, a body 404, avibration structure 406, a vibration weight 408, a vibration spring 410,and a return spring 412. At least the button 402 is exposed outside of ahousing for the vibrational input element 400 such that a user may exerta force on the vibrational input element 400 via button 402, whichcompresses return spring 412. The return spring 412 may be aligned alonga same axis as the body 404 and the button 402 of the vibrational inputelement 400. In one or more examples, the return spring 412 and thevibration spring 410 may be disposed in a substantially perpendiculararrangement.

As return spring 412 is compressed, vibration structure 406 comes intocontact with vibration weight 408. The contact between the vibrationstructure 406 and the vibration weight 408 may activate the vibrationspring 410 and produce a distinct vibration. An example of a vibrationpattern that may be produced by the activation of the vibration spring410 may be illustrated in FIG. 4E. The vibration pattern may be detectedby a sensor, such as an accelerometer. In a resting state, the vibrationweight 408 is below the vibration structure 406. In a pushed position,the vibration weight 408 moves to a position above the vibrationstructure 406. When a force on button 402 is released, return spring 412pushes the body 404 and the vibration structure 406 back to a restingposition with the vibration weight 408 located below the vibrationstructure 406. The vibrational input element 400 may be positionedwithin a cavity 414, such as a sleeve or an open space, within a housingfor the vibrational input element 400 such that when the body 404 isactuated, the position and motion of vibration structure 406 and theinteraction between the vibration weight 408 and the vibration spring410 is consistent during different actuations of the vibrational inputelement 400.

In one or more illustrative examples, the button 402 may be physicallyconnected to the body 404 at a first end 416 of the body 404. The body404 is abutted at a second end 418 of the body 404 by the return spring412. The second end 418 may be disposed at least substantially oppositethe first end 416. The vibration structure 406 can connect to or can bea part of the body 404. The return spring 412 may physically beconnected to a structure of a client device, such as a body of theclient device or a case fastened to the body of the client device. Thephysical and/or mechanical connection between components of thevibrational input element 400 and a client device may not be fixed. Forexample, vibrational input element 400 may be located within a removablecase of a client device. In these scenarios, when the removable case isattached to a client device, the physical coupling between the case andthe client device is sufficiently tight to provide a mechanical couplingthat results in motion of components of the vibrational input element400 and/or vibrations generated by actions of springs 410 and 412 thatmay be detected by a sensor, such as an accelerometer of the clientdevice.

FIG. 4B shows a simplified model 450 of the forces acting on body 404 aspart of a button vibrational input element such as the vibrational inputelement 400 illustrated in FIG. 4A. In this model, Fh is the forceexerted on the button 402 by a user (e.g. a user's finger, thumb, orhand). Fw1 is the contact force between the body 404 and a back wall ofthe cavity 414 opposite the vibration spring 410. Fk2 is the springforce from the return spring 412. Fb is a contact force between theweight 408 and either the vibration structure 406 or the body 404, asgenerated by the vibration spring 410. The angle of Fb is generated bythe contact angle between the vibration weight 408 contacting the body404 or the vibration structure 406. As part of this model:

Fk ₂ +F _(b) sin α=F _(h)  (1)

F _(b) cos α=Fw ₁  (2)

Based on characteristics (e.g., shapes, mass, etc.) of the components ofthe vibrational input element 400, such as the button 402, the body 404,the vibration structure 406, the weight 408, the vibration spring 410,and/or the return spring 412, an output force profile may be estimatedfor the vibrational input element. In one or more illustrative examples,to generate a vibration pattern that is detectable by at least onesensor, certain designs of the vibrational input element 400 may beimplemented. In various examples, a “tooth” or projection shape for thevibration structure 406 may be implemented or a relatively small ballsize for the weight 408 may be used. Additionally, the spring constantof the vibration spring 410 and/or the return spring 412 may beconfigured to produce vibrations with sufficient magnitude to bedetected by at least one sensor of a client device. In various examples,the vibration spring 410 may have a spring constant that is differentfrom a spring constant of the return spring 412.

Various design considerations may be taken into account whenimplementing the characteristics of features of vibrational inputelements. For example, at a certain tooth shape, the force required tomove a wheel may become excessive for a user. Additionally, some shapesfor the vibration structure 406 may make it difficult for the vibrationstructure 406 to contact a vibration weight. In some illustrativeexamples, the features of the vibration structure 406 and the weight 408may be designed such that the interface between the vibration structure406 and the weight 408 is configured to enable continued motion of thebody 404 and the vibration structure 406 when contact is made with theweight 408. In one or more additional examples, a size and shape of theweight 408 may be configured to produce sufficient contact to cause thevibration spring 410 to produce vibrations that are detectable by atleast one sensor of a client device. In situations where the weight 408is overly large, the motion of the vibration structure 406 may beimpeded and in situations where the size of the weight 408 is too small,a magnitude of vibrations produced by the vibration spring 410 inresponse to contact between the vibration structure 406 and the weight408 may not be sufficient for detection by at least one sensor of aclient device. The spring constant for the vibration spring 410 may alsobe configured to enable motion of the vibration structure 406 past theweight 408 and to produce vibrations having magnitudes that aredetectable by at least one sensor of a client device. In situationswhere the vibration spring 410 is overly resistant to compression, themotion of the vibration structure 406 past the weight 408 may be impededand in situations where the vibration spring 410 compresses too easily,the vibrations produced by the vibration spring 410 may not bedetectable by a sensor of a client device.

FIG. 4C further illustrates design considerations of the vibrationspring 410 in connection with other parts of a push-button vibrationalinput element. In particular, in situations where the vibration spring410 has a spring constant indicating a resistance to compression that istoo high in comparison to the resistance to compression of the returnspring 412, then the force exerted by the return spring 412 after thebutton 402 is released will not be sufficient to push the body 404 backinto a starting/neutral position, and the button 402 will not beconfigured to operate properly. Similarly, the spring constant of thereturn spring 412 may be designed to provide resistance levels that canreasonably be offset by force generated from actuation of thevibrational input element 400 by a user.

FIG. 4D illustrates an example “tooth” shape for the vibration structure406 and an associated ball shape for the weight 408. In scenarios wherethe vibrational input element 400 is in a neutral or resting state, thevibration structure 406 may be in a first position 460. As a force isapplied to the button 402 by a user, the vibration structure 406 maymove to a second position 470 in which the vibration structure 406contacts the weight 408. In various examples, contact between thevibration structure 406 and the weight 408 may cause a vibration. Insome embodiments, the vibration structure 406 may move past the weight408 to a third position 480. In one or more embodiments, the vibrationstructure 406 may move from the second position 470 to the thirdposition 480 based on compression of the vibration spring 410 as theweight 408 presses against the vibration spring 410 due to force exertedon the button 402 by a user.

A corresponding vibration signal 490 is illustrated by FIG. 4E. A firstportion 492 of the vibration signal 490 may correspond to a push actionwhen a user applies force to the button 402. The first portion 492 ofthe vibration signal 490 may be distinguished from a second portion 494of the vibration signal 490 when the button 402 is released and thereturn spring 412 pushes the button 402 back to a resting position. Inexample embodiments, the button press action may be designed to allowthe force of the return spring 412 to be the primary source of thevibration signal 490 during the release of the button 402, as opposed toan operation where the finger of a user may continue to apply at leastsome amount of force during the release of the button 402.

FIG. 5A illustrates another example “tooth” shape for the vibrationstructure and an associated ball shape for the weight of a buttonvibrational input element, in accordance with one or more exampleembodiments. In particular, FIG. 5A illustrates another shape for avibration structure 502 that operates in conjunction with a ball-shapedweight 504. The arrangement of the vibration structure 502 and theweight 504 may correspond to the arrangement shown in FIG. 4A with thevibration structure 502 corresponding to the vibration structure 406 andthe weight 504 corresponding to the weight 408. In scenarios where thevibrational input element that includes the vibration structure 502 andthe weight 504 is in a neutral or resting state, the vibration structure502 may be in a first position 510. As a force is applied by a user to abutton coupled to the vibration structure 502, the vibration structure502 may move to a second position 520 in which the vibration structure502 contacts the weight 504. In various examples, contact between thevibration structure 502 and the weight 504 may cause a vibration. Insome embodiments, the vibration structure 502 may move past the weight504 to a third position 530. In one or more embodiments, the vibrationstructure 502 may move from the second position 520 to the thirdposition 530 based on compression of a vibration spring in contact withthe weight 504 as the weight 504 presses against the vibration springdue to force exerted on the button by a user.

A vibration signal 590 generated by the movement of at least one of thevibration structure 502 and the weight 504 as part of a buttonvibrational input element are shown in FIG. 5B. A first portion 592 ofthe vibration signal 590 may correspond to a push action with respect tothe vibration structure 502 and a second portion 594 of the vibrationalsignal 590 may correspond to a release action with respect to thevibration structure 502 The vibration signal 590 generated by thestructure in FIG. 5A and as shown in FIG. 5B is distinguishable from thevibration signal 490 shown in FIG. 4E that is generated by the structurein FIG. 4D. In various examples, a device may have multiple buttons thatmay be distinguishable not only based on the position of the buttons onthe device, but by the actual shape of vibration structures and/orweights actuated by the button. Two buttons with different structuralfeatures may thus be placed next to each other in a device, and thevibration signals generated by the two buttons may be distinguished andused to activate different actions based on the different vibrationsignals generated by the different button vibrational input elements.

FIG. 6A illustrates aspects of button vibrational input elementcalibration, in accordance with various embodiments. In order to allow adevice to distinguish vibration signals received from a vibrationalinput element from other random signals, various different calibrationsystems and procedures may be used. In some embodiments, the vibrationalinput system 132 may be put into a calibration mode to detect signalsfrom a specific vibrational input element. For example, the vibrationalinput system 132 may be configured to monitor the signals generated byan accelerometer for five different distinct vibrational input elements.During one type of calibration, a user may be asked to repeat an actiona specified number of times (e.g. seven times or ten times). The signalsreceived from those inputs may be used to generate templates, such asvibration profiles, which account for the variations in signals possiblefor a single vibrational input element. For example, FIG. 6A illustratesa series of inputs associated with a single vibrational input element,and FIG. 6B illustrates a vibration profile that may be generated basedon the sensor data shown in FIG. 6A for the vibrational input elementduring calibration. For a push-button vibrational input element, a usermay be asked to press and release the vibrational input element a numberof times. For a gear vibrational input element, a user may be asked toroll the gear in one direction for a certain distance or rotation (e.g.one revolution, two revolutions, across a threshold number of “teeth”,etc.), and then to roll the gear in the opposite direction for anotherthreshold distance or number of rotations. This may be repeated for eachvibrational input element of a device to generate vibration profiles foreach element. The vibrational input system 132 may analyze the vibrationprofiles to confirm that different vibrational input elements producevibrations that are sufficiently distinct to allow the vibrational inputsystem 132 to distinguish between actuation of the different vibrationalinput elements. In various examples, the vibrational input system 132may inform a user that certain vibrational input elements do notgenerate sufficiently distinct signals, and will therefore be assignedto the same action when the corresponding vibration profile is detected(e.g. the same action within a game or user interface).

In addition to the calibration procedure described above for matchingdetected vibration patterns to vibrational input elements, other methodsmay be used as well. In some embodiments, a neural network or othermachine learning process may be used to match vibrational signals withactuation of a corresponding vibrational input element.

In one embodiment, signals generated by repeated inputs for a singlevibrational input element are collected (e.g. repeated push and releaseactions as illustrated in FIG. 6C). The repeated data may then beprocessed into data for a single action (e.g. a push action for a buttonvibrational input element). The different instances of the action arethen segmented by amplitude and local maxima, as illustrated by FIG. 6D,with a subset of the data used to generate vibration profiles or aclassifier for the associated vibrational input element.

FIG. 7A illustrates aspects of gear vibrational input element 700, inaccordance with embodiments described herein. As illustrated by FIG. 7A,the gear vibrational input element 700 includes a gear 706 within ahousing, and a vibration spring 702 attached to a weight 704. Gear 706may rotate around center pin 705 in both of directions 712 and 710 togenerate a vibration signal from the interaction of weight 704 and thesurface of gear 706. Gear 706 can be physically attached to a center pin705 or a similar attachment, which allows the gear 706 to physicallyrevolve around center pin 705. Center pin 705 is physically attached toa structure which maintains a relative position to the case coupled to adevice or a body of the device, and keeps a center of gear 706 in afixed position relative to the device as gear 706 rotates. Teeth orsurface portions of gear 706 physically touch weight 704. As gear 706turns, the connection between gear 706 and weight 704 may be periodic,depending on the force exerted by weight 704 and the shape of thesurface of gear 706. Vibration spring 702 is physically attached toweight 704 and attached to wall of a housing of the vibrational inputelement 700. The housing may be directly or indirectly connected to atleast one sensor, such as an accelerometer. Just as described above forthe button embodiment, the vibration spring 702 is not directly coupledto the sensor, but the physical structure of the housing of thevibrational input element 700 conveys mechanical vibrations from theweight 704 and the vibration spring 702 through the physical structureof the housing and/or body of the client device to the sensor. Thesephysical structures may include a case that surrounds a portion of abody of a smartphone but are not permanently attached, so long as thephysical structures of the case are sufficient to convey the mechanicalvibrations produced during actuation of the vibrational input element700 in a repeatable manner to a sensor of a client device.

FIG. 7B illustrates an example vibrational signal 708 that may begenerated from a rotation over a single “tooth” or pattern in thesurface of the gear 706 by the interaction with the weight 704.Vibrational signal 708 is received at an accelerometer of a clientdevice after a physical action or vibration travels from the vibrationspring 702 and the weight 704 through the physical coupling of themechanical structures to a sensor. FIG. 7C illustrates four differentpossible surface patterns that may be used with a gear 706, shown asgears 706A-D, and associated distinguishable vibration patterns for eachgear shown as vibration patterns 708A-D. Depending on the sensitivity ofthe sensor(s) of a client device, some embodiments may include four suchgear vibrational input elements attached to a single client device. Someembodiments may further be able to distinguish between gears 706 withthe same surface pattern which are located in relation to differentpositions of a client device, again based on a sensitivity of one ormore sensors of the client device. In other embodiments, where thepatterns are not distinguishable, a client device may perform the sameone or more actions in response to actuation of two differentvibrational input elements. While the example embodiments eachillustrate gears 706 with uniformly periodic structures around thewheel, in some embodiments, variations in the patterns on the wheelenable the vibration signals analyzed from an accelerometer to determinethe position of a wheel, and to modify software responses based on thewheel position. For example, in one embodiment, the teeth may get largerfrom one position on the wheel to another position around the wheel, andthen get smaller around the circumference to the initial starting point.In other embodiments, any such variations may be present.

FIG. 8A illustrates aspects of shapes of teeth of a gear vibrationalinput element, in accordance with embodiments described herein, and FIG.8B illustrates how certain characteristics of the different gears 806A,806B, 806C, 806D, 806E and/or 806F may be grouped so that vibrationalinput system 132 may distinguish between corresponding vibrationalsignals 808A, 808B, 808C, 808D, 808E, and/or 808F generated by differentgears 806A, 806B, 806C, 806D, 806E and/or 806F.

As described above, the different gears 806A, 806B, 806C, 806D, 806Eand/or 806F may be located within a case removably attached to a clientdevice or a body of a client device and may be calibrated in differentways. Once some or all of the vibrational input elements attached to aclient device are calibrated, the vibrational input system 132 may beconfigured to associate vibration signals with different applications oruser interface actions. For example, within a map application, avibration signal associated with a gear element may be used to initiatea zoom in action in one rotation direction, and a zoom out action inanother rotation direction. If multiple gear elements are present, asecond gear 806 may be used to pan along a first axis, and a third gear806 may be used to pan along a second axis orthogonal to the first axis.In some embodiments, such the actions performed in response to actuationof the different gears 806 may be automatically determined by thevibrational input system 132. In additional embodiments, a user mayspecifically assign or update such actions in a custom fashion.Similarly, on the same client device, when a game application is open,the vibrational input elements may be associated with game specificactions that are different from the map application actions. The actionsperformed with respect to actuation of the vibrational input elements inrelation to the game application may be either assigned by thevibrational input system 132, or set by a user. The actions taken by asystem in response to detected vibrations may thus be application orcontext specific to various interfaces of a client device.

As described in the calibration above, the detection of a vibrationsignal may be a simple association between a template and a detectedvibration. In other embodiments, more complex associations may be madebetween a single vibrational input element and the corresponding action.For example, in a musical application, the volume and quality of thesound generated in relation to the musical application may be associatedwith complex details of the actual detected vibration. For example,calibration procedures may be performed in conjunction with a specificvibrational input element, to distinguish between a strong press or aweak press. In additional examples, an action may be taken when a pressvibration is received and then the action may be reversed when a releasevibration of the same vibrational input element is detected. In someembodiments, a basic action, such as selection of a particular musicalnote, may be performed using general vibration profiles, but secondarycharacteristics of the note (e.g. warble, timbre, etc.) may be based onspecific details of the actual detected vibrational input. Additionally,detection of a vibrational input may be combined with other inputs tocreate combination-based actions. For example, a blowing signal receivedat a microphone may be combined with a vibrational input signal tofurther create a complex interaction resulting in a note with aparticular loudness, pitch, and timbre. Combinations of variousvibrational input elements attached to a client device may thus be usedin a variety of ways to create complex input and output interactions. Insome embodiments, the power consumption of the vibrational inputelements is minimal, such as at or near zero Watts, because thevibrational input elements are simply generating vibrations mechanicallywithout the addition of electrical power. Further, any increase in powerusage of sensors of the client device in relation to detectingvibrations produced by the vibrational input elements is negligiblesince the sensors are already set to operate independent of thevibrational input elements. Increased resource usage associated withmonitoring vibrations received at the sensors may be minimal in relationto the power required of the operation of electronic input elements thatare coupled to a source of electrical power.

FIG. 9 is a flow diagram illustrating an example method 900 to usevibrational input elements to perform an action in relation to acomputing device application, in accordance with one or more exampleembodiments. The method 900 may include, at 902, actuating a vibrationalinput element that includes a vibration structure, a weight, and aspring coupled to the weight. In various examples. contact between thevibration structure and the weight may cause at least the spring tovibrate. The weight may vibrate in additional examples. The vibrationalinput element may include a button vibrational input element that causescontact between the vibration structure and the weight in response to apush and/or release of a button of the vibrational input element. Inthese scenarios, the vibration structure may have a shape including atleast one tooth. Additionally, the vibrational input element may includea wheel or gear vibrational input element that causes vibrations to beproduced as the gear is rotated around a pin located in a center regionof the gear by a user and the edges of the gear contact the weight. Thegear may include a number of teeth disposed around the edge of the gear.In various examples, the vibrational input element may be one of aplurality of vibrational input elements that are included in a housing.The housing may be part of a case that is removable attached to at leasta portion of a mobile computing device to provide protection for themobile computing device. Further, the housing may be part of a body ofthe mobile computing device and thus be integrated as part of the mobilecomputing device.

In addition, the method 900 may include, at operation 904, detecting, byone or more sensors, vibrations produced by actuation of the vibrationalinput element. In one or more illustrative examples, the one or moresensors may include at least one accelerometer. At operation 906, themethod 900 may include analyzing the vibrations produced by actuation ofthe vibrational input element with respect to a plurality of vibrationprofiles. Each of the vibration profiles may correspond to vibrationsthat are produced by actuation of a plurality of vibrational inputelements. In various examples, the vibration profiles may be determinedduring a calibration process for the computing device. In variousexamples, multiple calibration processes may be performed for eachvibrational input element.

The analysis of the vibrations produced by actuation of the vibrationalinput element with respect to the vibration profiles may includecomparing a pattern of the vibrations to a corresponding pattern of eachof the vibration profiles. In one or more illustrative examples, ameasure of similarity may be produced indicating an amount of similaritybetween the vibration pattern produced by actuation of the vibrationalinput element and vibrations patterns included in a respective vibrationprofile. In various examples, the vibration pattern produced byactuation of the vibrational input element may be compared to at least aportion of a library of previously determined vibration profiles todetermine measures of similarity between the respective vibrationprofiles and the vibration pattern of the vibrational input element.

Further, at operation 908, the method 900 may include determining thatthe vibrations produced by actuation of the vibrational input elementcorrespond to a respective vibration profile of the plurality ofvibration profiles. For example, an amount of similarity between thevibration pattern produced by actuation of the vibrational input elementand the vibration pattern of the vibration profile may be above athreshold amount of similarity. In additional examples, a vibrationprofile having a greatest amount of similarity with the vibrationpattern produced by actuation of the vibrational input element may beselected as the vibration profile that corresponds to the vibrationpattern of the vibrational input element.

The method 900 may also include, at operation 910, determining an actionto be performed with respect to an application executed by the computingdevice. In various examples, a vibrational input system executed by thecomputing device may determine an application of the computing devicethat is currently open and/or active. An open and/or active applicationmay include an application that is being executed by the computingdevice to accept input at a given time via one or more input devices ofthe computing device. For example, a first application may be executedto receive input via one or more input devices of the computing deviceduring a first period of time and a second application may be executedto receive input via one or more input devices of the computing deviceduring a second period of time. The computing device may display one ormore user interfaces of an open and/or active application indicatingthat the computing device is processing input with respect to the openand/or active application. In one or more examples, each vibrationprofile may be associated with at least one action that is to beperformed by the computing device with respect to an open and/or activeapplication. In one or more examples, each vibration profile may beassociated with different actions for different applications. Toillustrate, during a period of time that a first application executed bythe computing device is open and/or active, a vibration profile may beassociated with one or more first actions. Further, during a period oftime that a second application executed by the computing device is openand/or active, the vibration profile may be associated with one or moresecond actions that may be different from the one or more first actions.

At operation 912, the method 900 may include causing the actiondetermined in relation to operation 910 to be performed in relation tothe application. That is, after determining an application that iscurrently open and/or actively being executed by the computing deviceand determining the action that is associated with the vibration profilecorresponding to the detected vibration pattern produced by actuation ofthe vibrational input element, the computing device may cause the actionto be performed. In one or more examples, the action may correspond toselection of a user interface element, movement of a user interfaceelement, modifying a view of a user interface, producing one or moresounds, modifying content shown in a user interface, causing contentshown in a user interface to be played, or one or more combinationsthereof.

FIG. 10 is a block diagram of a system 1000 including an architecture ofsoftware 1002, which can be installed on any one or more of the devicesdescribed above. Such software may be used both with calibrating anddetecting signals from vibrational input elements, and for associateddetected signals with actions in various applications and userinterfaces. FIG. 10 is merely a non-limiting example of a softwarearchitecture 1002, and it will be appreciated that many otherarchitectures can be implemented to facilitate the functionalitydescribed herein. In various embodiments, the software architecture 1002is implemented by hardware such as machine 1100 of FIG. 11 that includesprocessors 1110, memory 1130, and I/O components 1150. In this examplearchitecture, the software architecture 1002 can be conceptualized as astack of layers where each layer may provide a particular functionality.For example, the software architecture 1002 includes layers such as anoperating system 1004, libraries 1006, frameworks 1008, and applications1010. Operationally, the applications 1010 invoke applicationprogramming interface (API) calls 1012 through the software stack andreceive messages 1014 in response to the API calls 1012, consistent withsome embodiments.

In various implementations, the operating system 1004 manages hardwareresources and provides common services. The operating system 1004includes, for example, a kernel 1020, services 1022, and drivers 1024.The kernel 1020 acts as an abstraction layer between the hardware andthe other software layers, consistent with some embodiments. Forexample, the kernel 1020 provides memory management, processormanagement (e.g., scheduling), component management, networking, andsecurity settings, among other functionality. The services 1022 canprovide other common services for the other software layers. The drivers1024 are responsible for controlling or interfacing with the underlyinghardware, according to some embodiments. For instance, the drivers 1024can include display drivers, camera drivers, BLUETOOTH® or BLUETOOTH®Low Energy drivers, flash memory drivers, serial communication drivers(e.g., Universal Serial Bus (USB) drivers), WI-FI® drivers, audiodrivers, power management drivers, and so forth.

In some embodiments, the libraries 1006 provide a low-level commoninfrastructure utilized by the applications 1010. The libraries 1006 caninclude system libraries 1030 (e.g., C standard library) that canprovide functions such as memory allocation functions, stringmanipulation functions, mathematic functions, and the like. In addition,the libraries 1006 can include API libraries 1032 such as medialibraries (e.g., libraries to support presentation and manipulation ofvarious media formats such as Moving Picture Experts Group-4 (MPEG4),Advanced Video Coding (H.264 or AVC), Moving Picture Experts GroupLayer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR)audio codec, Joint Photographic Experts Group (JPEG or JPG), or PortableNetwork Graphics (PNG)), graphics libraries (e.g., an OpenGL frameworkused to render in two dimensions (2D) and three dimensions (3D) in agraphic content on a display), database libraries (e.g., SQLite toprovide various relational database functions), web libraries (e.g.,WebKit to provide web browsing functionality), and the like. Thelibraries 1006 can also include a wide variety of other libraries 1034to provide many other APIs to the applications 1010.

The frameworks 1008 provide a high-level common infrastructure that canbe utilized by the applications 1010, according to some embodiments. Forexample, the frameworks 1008 provide various graphic user interface(GUI) functions, high-level resource management, high-level locationservices, and so forth. The frameworks 1008 can provide a broad spectrumof other APIs that can be utilized by the applications 1010, some ofwhich may be specific to a particular operating system 1004 or platform.

In an example embodiment, the applications 1010 include a homeapplication 1050, a contacts application 1052, a browser application1054, a book reader application 1056, a location application 1058, amedia application 1060, a messaging application 1062, a game application1064, and a broad assortment of other applications such as a third-partyapplication 1066. According to some embodiments, the applications 1010are programs that execute functions defined in the programs. Variousprogramming languages can be employed to create one or more of theapplications 1010, structured in a variety of manners, such asobject-oriented programming languages (e.g., Objective-C, Java, or C++)or procedural programming languages (e.g., C or assembly language). In aspecific example, the third-party application 1066 (e.g., an application1010 developed using the ANDROID™ or IOS™ software development kit (SDK)by an entity other than the vendor of the particular platform) may bemobile software running on a mobile operating system such as IOS™,ANDROID™, WINDOWS® Phone, or another mobile operating system. In thisexample, the third-party application 1066 can invoke the API calls 1012provided by the operating system 1004 to facilitate functionalitydescribed herein.

Some embodiments may particularly include a vibrational input system132. In certain embodiments, this may be a stand-alone application thatoperates to manage calibration and detection of vibrational signals fromvibrational input elements, and to initiate actions based on detectedinputs. In other embodiments, this functionality may be integrated withanother application or system software such as a game application 1064or aspects of frameworks 1008 or libraries 1006. Vibrational inputsystem 132 may have associations with both hardware and software, andmay be used to provide inputs for a camera device of machine 1100,communication with a server system via I/O components 1150, and receiptand storage of received media collections in memory 1130 in addition tointeractions with various software or UI elements of a device.Presentation of content and user inputs associated with content may begenerated by vibrational input system 132 using different frameworks1008, library 1006 elements, or operating system 1004 elements operatingon a machine 1100.

FIG. 11 is a block diagram illustrating components of a machine 1100,according to some embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 10 shows a diagrammatic representation of the machine1100 in the example form of a computer system, within which instructions1116 (e.g., software, a program, an application 1010, an applet, an app,or other executable code) for causing the machine 1100 to perform anyone or more of the methodologies discussed herein can be executed. Inalternative embodiments, the machine 1100 operates as a standalonedevice or can be coupled (e.g., networked) to other machines. In anetworked deployment, the machine 1100 may operate in the capacity of aserver or a client device in a server-client network environment, or asa peer machine in a peer-to-peer (or distributed) network environment.The machine 1100 can comprise, but not be limited to, a server computer,a client computer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a set-top box (STB), a personal digital assistant(PDA), an entertainment media system, a cellular telephone, a smartphone, a mobile device, a wearable device (e.g., a smart watch), a smarthome device (e.g., a smart appliance), other smart devices, a webappliance, a network router, a network switch, a network bridge, or anymachine capable of executing the instructions 1116, sequentially orotherwise, that specify actions to be taken by the machine 1100.Further, while only a single machine 1100 is illustrated, the term“machine” shall also be taken to include a collection of machines 1100that individually or jointly execute the instructions 1116 to performany one or more of the methodologies discussed herein.

In various embodiments, the machine 1100 comprises processors 1110,memory 1130, and I/O components 1150, which can be configured tocommunicate with each other via a bus 1102. In an example embodiment,the processors 1110 (e.g., a central processing unit (CPU), a reducedinstruction set computing (RISC) processor, a complex instruction setcomputing (CISC) processor, a graphics processing unit (GPU), a digitalsignal processor (DSP), an application specific integrated circuit(ASIC), a radio-frequency integrated circuit (RFIC), another processor,or any suitable combination thereof) include, for example, a processor1112 and a processor 1114 that may execute the instructions 1116. Theterm “processor” is intended to include multi-core processors 1110 thatmay comprise two or more independent processors 1112, 1114 (alsoreferred to as “cores”) that can execute instructions 1116contemporaneously. Although FIG. 11 shows multiple processors 1110, themachine 1100 may include a single processor 1110 with a single core, asingle processor 1110 with multiple cores (e.g., a multi-core processor1110), multiple processors 1112, 1114 with a single core, multipleprocessors 1112, 1114 with multiple cores, or any combination thereof.

The memory 1130 comprises a main memory 1132, a static memory 1134, anda storage unit 1136, accessible to the processors 1110 via the bus 1102,according to some embodiments. The storage unit 1136 can include amachine-readable medium 1138 on which are stored the instructions 1116embodying any one or more of the methodologies or functions describedherein. The instructions 1116 can also reside, completely or at leastpartially, within the main memory 1132, within the static memory 1134,within at least one of the processors 1110 (e.g., within the processor'scache memory), or any suitable combination thereof during executionthereof by the machine 1100. Accordingly, in various embodiments, themain memory 1132, the static memory 1134, and the processors 1110 areconsidered machine-readable media 1138.

As used herein, the term “memory” refers to a machine-readable medium1138 able to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 1138 is shown, in an example embodiment, to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storethe instructions 1116. The term “machine-readable medium” shall also betaken to include any medium, or combination of multiple media, that iscapable of storing instructions e.g., instructions 1116) for executionby a machine (e.g., machine 1100), such that the instructions 1116, whenexecuted by one or more processors of the machine 1100 (e.g., processors1110), cause the machine 1100 to perform any one or more of themethodologies described herein. Accordingly, a “machine-readable medium”refers to a single storage apparatus or device, as well as “cloud-based”storage systems or storage networks that include multiple storageapparatus or devices. The term “machine-readable medium” shallaccordingly be taken to include, but not be limited to, one or more datarepositories in the form of a solid-state memory (e.g., flash memory),an optical medium, a magnetic medium, other non-volatile memory (e.g.,erasable programmable read-only memory (EPROM)), or any suitablecombination thereof. The term “machine-readable medium” specificallyexcludes non-statutory signals per se.

The I/O components 1150 include a wide variety of components to receiveinput, provide output, produce output, transmit information, exchangeinformation, capture measurements, and so on. In general, it will beappreciated that the I/O components 1150 can include many othercomponents that are not shown in FIG. 11. The I/O components 1150 aregrouped according to functionality merely for simplifying the followingdiscussion, and the grouping is in no way limiting. In various exampleembodiments, the I/O components 1150 include output components 1152 andinput components 1154. The output components 1152 include visualcomponents (e.g., a display such as a plasma display panel (PDP), alight emitting diode (LED) display, a liquid crystal display (LCD), aprojector, or a cathode ray tube (CRT)), acoustic components (e.g.,speakers), haptic components (e.g., a vibratory motor), other signalgenerators, and so forth. The input components 1154 include alphanumericinput components (e.g., a keyboard, a touch screen configured to receivealphanumeric input, a photo-optical keyboard, or other alphanumericinput components), point-based input components (e.g., a mouse, atouchpad, a trackball, a joystick, a motion sensor, or other pointinginstruments), tactile input components (e.g., a physical button, atouchscreen that provides location and force of touches or touchgestures, or other tactile input components), audio input components(e.g., a microphone), and the like.

In some further example embodiments, the I/O components 1150 includebiometric components 1156, motion components 1158, environmentalcomponents 1160, or position components 1162, among a wide array ofother components. For example, the biometric components 1156 includecomponents to detect expressions (e.g., hand expressions, facialexpressions, vocal expressions, body gestures, or eye tracking), measurebiosignals (e.g., blood pressure, heart rate, body temperature,perspiration, or brain waves), identify a person (e.g., voiceidentification, retinal identification, facial identification,fingerprint identification, or electroencephalogram basedidentification), and the like. The motion components 1158 includeacceleration sensor components (e.g., accelerometer), gravitation sensorcomponents, rotation sensor components (e.g., gyroscope), and so forth.The environmental components 1160 include, for example, illuminationsensor components (e.g., photometer), temperature sensor components(e.g., one or more thermometers that detect ambient temperature),humidity sensor components, pressure sensor components (e.g.,barometer), acoustic sensor components (e.g., one or more microphonesthat detect background noise), proximity sensor components (e.g.,infrared sensors that detect nearby objects), gas sensor components(e.g., machine olfaction detection sensors, gas detection sensors todetect concentrations of hazardous gases for safety or to measurepollutants in the atmosphere), or other components that may provideindications, measurements, or signals corresponding to a surroundingphysical environment. The position components 1162 include locationsensor components (e.g., a Global Positioning System (GPS) receivercomponent), altitude sensor components (e.g., altimeters or barometersthat detect air pressure from which altitude may be derived),orientation sensor components (e.g., magnetometers), and the like.

Communication can be implemented using a wide variety of technologies.The I/O components 1150 may include communication components 1164operable to couple the machine 1100 to a network 1180 or devices 1170via a coupling 1182 and a coupling 1172, respectively. For example, thecommunication components 1164 include a network interface component oranother suitable device to interface with the network 1180. In furtherexamples, communication components 1164 include wired communicationcomponents, wireless communication components, cellular communicationcomponents, near field communication (NFC) components, BLUETOOTH®components (e.g., BLUETOOTH® Low Energy), WI-FI® components, and othercommunication components to provide communication via other modalities.The devices 1170 may be another machine 1100 or any of a wide variety ofperipheral devices (e.g., a peripheral device coupled via a UniversalSerial Bus (USB)).

Moreover, in some embodiments, the communication components 1164 detectidentifiers or include components operable to detect identifiers. Forexample, the communication components 1164 include radio frequencyidentification (RFID) tag reader components, NFC smart tag detectioncomponents, optical reader components (e.g., an optical sensor to detecta one-dimensional bar codes such as a Universal Product Code (UPC) barcode, multi-dimensional bar codes such as a Quick Response (QR) code,Aztec Code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code,Uniform Commercial Code Reduced Space Symbology (UCC RSS)-2D bar codes,and other optical codes), acoustic detection components (e.g.,microphones to identify tagged audio signals), or any suitablecombination thereof. In addition, a variety of information can bederived via the communication components 1164, such as location viaInternet Protocol (IP) geo-location, location via WI-FI® signaltriangulation, location via detecting a BLUETOOTH® or NFC beacon signalthat may indicate a particular location, and so forth.

In various example embodiments, one or more portions of the network 1180can be an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), the Internet, a portion of the Internet, a portion of the publicswitched telephone network (PSTN), a plain old telephone service (POTS)network, a cellular telephone network, a wireless network, a WI-FI®network, another type of network, or a combination of two or more suchnetworks. For example, the network 1180 or a portion of the network 1180may include a wireless or cellular network, and the coupling 1182 may bea Code Division Multiple Access (CDMA) connection, a Global System forMobile communications (GSM) connection, or another type of cellular orwireless coupling. In this example, the coupling 1182 can implement anyof a variety of types of data transfer technology, such as SingleCarrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized(EVDO) technology, General Packet Radio Service (GPRS) technology,Enhanced Data rates for GSM Evolution (EDGE) technology, thirdGeneration Partnership Project (3GPP) including 3G, fourth generationwireless (4G) networks, Universal Mobile Telecommunications System(UMTS), High Speed Packet Access (HSPA), Worldwide interoperability forMicrowave Access (WiMAX), Long Term Evolution (LTE) standard, othersdefined by various standard-setting organizations, other long rangeprotocols, or other data transfer technology.

In example embodiments, the instructions 1116 are transmitted orreceived over the network 1180 using a transmission medium via a networkinterface device (e.g., a network interface component included in thecommunication components 1164) and utilizing any one of a number ofwell-known transfer protocols (e.g., Hypertext Transfer Protocol(HTTP)). Similarly, in other example embodiments, the instructions 1116are transmitted or received using a transmission medium via the coupling1172 (e.g., a peer-to-peer coupling) to the devices 1170. The term“transmission medium” shall be taken to include any intangible mediumthat is capable of storing, encoding, or carrying the instructions 1116for execution by the machine 1100, and includes digital or analogcommunications signals or other intangible media to facilitatecommunication of such software.

Furthermore, the machine-readable medium 1138 is non-transitory (inother words, not having any transitory signals) in that it does notembody a propagating signal. However, labeling the machine-readablemedium 1138 “non-transitory” should not be construed to mean that themedium is incapable of movement; the medium 1138 should be considered asbeing transportable from one physical location to another. Additionally,since the machine-readable medium 1138 is tangible, the medium 1138 maybe considered to be a machine-readable device.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present disclosure. Such embodimentsof the inventive subject matter may be referred to herein, individuallyor collectively, by the term “invention” merely for convenience andwithout intending to voluntarily limit the scope of this application toany single disclosure or inventive concept if more than one is, in fact,disclosed.

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores are somewhat arbitrary,and particular operations are illustrated in a context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within a scope of various embodiments of thepresent disclosure. In general, structures and functionality presentedas separate resources in the example configurations may be implementedas a combined structure or resource. Similarly, structures andfunctionality presented as a single resource may be implemented asseparate resources. These and other variations, modifications,additions, and improvements fall within a scope of embodiments of thepresent disclosure as represented by the appended claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A device comprising: a housing that includes acavity; and a vibrational input element disposed in the cavity, thevibrational input element including: a vibration structure having ashape; a weight that is configured to contact the vibration structure inresponse to actuation of the vibrational input element; and a springcoupled to the weight and to a wall of the cavity, the spring beingconfigured to produce vibrations in response to contact between thevibration structure and the weight.
 2. The device of claim 1, wherein:the vibrational input element includes a body and a button coupled tothe body; at least a portion of the button extends outside of thecavity; and the vibration structure is coupled to the body.
 3. Thedevice of claim 2, comprising an additional spring that is coupled tothe body, and wherein the spring is disposed at least substantiallyperpendicular in relation to the body and in relation to the additionalspring.
 4. The device of claim 3, wherein a first spring constant of thespring is different from a second spring constant of the additionalspring.
 5. The device of claim 1, wherein the shape of the vibrationstructure corresponds to a gear having a number of teeth disposed aroundan edge, the vibration structure being configured to rotate around a pinlocated at a center region of the vibration structure.
 6. The device ofclaim 1, comprising: an additional vibrational input element disposedwithin an additional cavity of the housing, the additional vibrationalinput element including: an additional vibration structure having anadditional shape; an additional weight that is configured to contact theadditional vibration structure and produce additional vibrations inresponse to actuation of the additional vibrational input element; andan additional spring coupled to the additional weight and to anadditional wall of the additional cavity, the additional spring beingconfigured to vibrate in response to contact between the additionalvibration structure and the additional weight.
 7. The device of claim 6,wherein the additional shape of the additional vibration structure isdifferent from the shape of the vibration structure.
 8. The device ofclaim 7, wherein: the vibrational input element includes a body, abutton coupled to the body, and the shape of the vibration structureincludes a single tooth coupled to the body; and the additionalvibrational input element includes an additional body, an additionalbutton coupled to the body, and the additional shape of the additionalvibration structure includes multiple teeth coupled to the additionalbody.
 9. The device of claim 7, wherein: the vibrational input elementincludes a body, a button coupled to the body, and the shape of thevibration structure includes at least one tooth coupled to the body; andthe additional shape of the additional vibration structure correspondsto a gear having a number of teeth disposed around an edge of the gear,the additional vibration structure being configured to rotate around apin located at a center region of the additional vibration structure.10. The device of claim 1, wherein the housing is integrated with a bodyof a mobile computing device, the mobile computing device including atleast one sensor configured to detect the vibrations produced by theactuation of the vibrational input element.
 11. The device of claim 1,wherein the housing includes a case that is configured to removablycouple to a mobile computing device.
 12. The device of claim 1,comprising an accelerometer to detect the vibrations produced byactuation of the vibrational input element.
 13. A vibrational inputelement comprising: a body; a vibration structure having a shape, thevibration structure being connected to the body or being part of thebody; a weight that is configured to contact the vibration structure inresponse to actuation of the vibrational input element; a first springcoupled to the weight, the first spring being configured to producevibrations in response to contact between the vibration structure andthe weight; and a second spring that is coupled to the body, the secondspring being disposed at least substantially perpendicular in relationto the first spring.
 14. The vibrational input device of claim 13,wherein: a button is coupled to the body; the vibrational input deviceis disposed in a cavity; and at least a portion of the button extendsoutside of the cavity.
 15. The vibrational input element of claim 14,wherein the cavity is disposed in a housing of a client device.
 16. Thevibrational input element of claim 14, wherein the cavity is disposed ina case that is configured to be removably attached to a client device.17. The vibrational input element of claim 14, wherein a first springconstant of the first spring is different from a second spring constantof the second spring.
 18. The vibrational input element of claim 14,wherein the vibration structure comprises a single tooth.
 19. Thevibrational input element of claim 14, wherein the vibration structurecomprises multiple teeth.
 20. A vibrational input element comprising: avibration structure that corresponds to a gear having a number of teethdisposed around an edge of the vibration structure, the vibrationstructure being configured to rotate around a pin located at a centerregion of the vibration structure; a weight that contacts a portion ofthe teeth of the vibration structure; and a spring coupled to theweight, the spring being configured to produce vibrations in response toactuation of the vibration structure.